package com.aaa.tars.controller;

import com.aaa.tars.entity.Pay;
import com.aaa.tars.service.PayService;
import com.aaa.tars.util.Page;
import com.aaa.tars.util.Result;
import com.aaa.tars.util.ResultUtil;
import org.apache.ibatis.annotations.Update;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.Map;

/**
 * @FileName: PayController
 * @Description:
 * @Author: ghz
 * @CreateTime:2025/9/11 15:33
 * @Version:1.0.0
 */
@RestController
@RequestMapping("pay")
public class PayController {
    @Resource
    private PayService payService;
    // 新增：根据订单号查询支付记录
    @GetMapping("/queryByOrderNo/{orderNo}")
    public Result queryByOrderNo(@PathVariable String orderNo) {
        Pay pay = payService.getByOrderNo(orderNo);
        return ResultUtil.success(pay);
    }

    @GetMapping("queryById")
    public Result queryById(Integer payId){
        return ResultUtil.success(this.payService.queryById(payId));
    }
    @PostMapping("queryByPage")
    public Result queryByPage(@RequestBody Page<Pay> page) {
        return ResultUtil.success(this.payService.queryByPage(page));
    }
    @PostMapping("insert")
    public Result insert(@RequestBody Pay pay) {
        return ResultUtil.success(this.payService.insert(pay));
    }

    /**
     * 编辑数据
     *
     * @param pay 实体
     * @return 编辑结果
     */
    @PutMapping("update")
    public Result update(@RequestBody Pay pay) {
        return ResultUtil.success(this.payService.update(pay));
    }

    /**
     * 删除数据
     *
     * @param payId 主键
     * @return 删除是否成功
     */
    @DeleteMapping("deleteById")
    public Result deleteById(Integer payId) {
        return ResultUtil.success(this.payService.deleteById(payId));
    }

    // 新增1：创建微信支付预支付单（前端点击"去支付"调用）
    @PostMapping("createNative")
    public Result createNative(@RequestBody Pay pay) throws Exception {
            return ResultUtil.success(this.payService.createWxPay(pay)); // 返回code_url给前端

    }

    // 新增2：查询支付状态（前端轮询调用）
    @GetMapping("queryStatus/{orderNo}")
    public Result queryPayStatus(@PathVariable String orderNo) throws Exception {

            return ResultUtil.success(this.payService.queryWxPayStatus(orderNo)); // 返回支付状态（如SUCCESS）

    }
}